package com.rybbaby.tss.core.annotation.validator;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.rybbaby.tss.core.verifier.StringVerifier;

/**
 * @description 字符串验证器注解
 * 
 * @author 谢进伟
 * 
 * @createDate 2016年3月31日 下午11:18:09
 */
@Target({ElementType.FIELD , ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface StringValidator{
	
	public static enum StringCaseType {
		/**
		 * 大写
		 */
		UPPERCASE,
		/**
		 * 小写
		 */
		LOWERCASE,
		/**
		 * 大写或小写
		 */
		UPPERCASEORLOWERCASE
	}
	
	/**
	 * 是否为纯英文
	 * 
	 * @return
	 */
	public boolean pureEnlish() default false;
	
	/**
	 * 是否为纯中文
	 * 
	 * @return
	 */
	public boolean pureChinese() default false;
	
	/**
	 * 是否为纯数字
	 * 
	 * @return
	 */
	public boolean puredigit() default false;
	
	/**
	 * 大小写
	 * 
	 * @return
	 */
	public StringCaseType caseType() default StringCaseType.UPPERCASEORLOWERCASE;
	
	/**
	 * 字符串长度
	 * 
	 * @return
	 */
	public int length() default Integer.MAX_VALUE;
	
	/**
	 * 是否允许为空值
	 * 
	 * @return
	 */
	public boolean nullable() default true;
	
	/**
	 * 验证器
	 * 
	 * @return
	 */
	public Class<? extends StringVerifier> verifier() default StringVerifier.class;
}
